package com.loveprogrammer.netty.simple.client;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.util.CharsetUtil;

/**
 * @ClassName HandlerClientHello
 * @Description 简单客户端
 *   -- @ChannelHandler.Sharable 这个注解是为了线程安全，如果你不在乎是否线程安全，不加也可以
 *   -- SimpleChannelInboundHandler：这里的类型可以是ByteBuf，也可以是String，还可以是对象，根据实际情况来；
 *   -- channelRead0：消息读取方法，注意名称中有个0；
 *   -- CharsetUtil.UTF_8：这个是JDK原生的方法，用于指定字节数组转换为字符串时的编码格式。
 *   --
 * @Author admin
 * @Date 2023/11/15 14:53
 * @Version 1.0
 */
@ChannelHandler.Sharable
public class HandlerClientHello extends SimpleChannelInboundHandler<ByteBuf> {
    @Override
    protected void channelRead0(ChannelHandlerContext channelHandlerContext, ByteBuf byteBuf) throws Exception {

        System.out.println("接收到消息：" + byteBuf.toString(CharsetUtil.UTF_8));
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        /**
         * @Description  处理I/O事件的异常
         **/
        cause.printStackTrace();
        ctx.close();
    }
}
